package com.itheima.d4_jdk8_time;

import java.time.Instant;
import java.time.LocalDateTime;

/**
 * 目标：掌握Instant的使用。（代替Date）
 * Instant：时间线上的某个时刻/时间戳
 * 通过获取Instant的对象可以拿到此刻的时间，该时间由两部分组成：
 * 从1970-01-01 00:00:00 开始走到此刻的总秒数 + 不够1秒的纳秒数
 *
 * 作用：可以用来记录代码的执行时间，或用于记录用户操作某个事件的时间点。
 *
 * 对比：
 *   传统的Date类，只能精确到毫秒，并且是可变对象；
 *   新增的Instant类，可以精确到纳秒，并且是不可变对象，推荐用Instant代替Date。
 *   Tip:
 * 1秒=1000毫秒；
 * 1毫秒=1000微秒；
 * 1微秒=1000纳秒；
 * 1秒 = 1000 000 000纳秒
 */
public class Test5_Instant {
    public static void main(String[] args) {
       // 1、创建Instant的对象，获取此刻时间信息
        Instant now = Instant.now(); // 不可变对象

        System.out.println("===从1970-01-01 00:00:00 开始走到此刻的总秒数 + 不够1秒的纳秒数====");
        // 2、获取总秒数
        long second = now.getEpochSecond();
        System.out.println("总秒数： "+second);

        // 3、不够1秒的纳秒数
        int nano = now.getNano();
        System.out.println("不够1秒的纳秒数: "+nano);

        //看纳秒数和now的纳秒数是一样的
        System.out.println("=========看纳秒数和now的纳秒数是一样的===========");
        System.out.println(now);  //小数点后面的就是不够一秒的纳秒

        //返回一个新对象
        Instant instant = now.plusNanos(111);

        // Instant对象的作用：做代码的性能分析，或者记录用户的操作时间点
        Instant now1 = Instant.now();
        // 代码执行。。。。
        Instant now2 = Instant.now();

        LocalDateTime l = LocalDateTime.now();
    }
}
